User loginNavigation |
Monads in Ruby
Monads in Ruby, a several-part work in progress, is an attempt to explain and demonstrate monads in Ruby. It looks pretty good so far, although I feel like we could coax a friendlier syntax out of Ruby with a little effort. Maybe in Part 4!
By Matt Hellige at 2005-11-20 22:31 | Fun | Ruby | Teaching & Learning | 20 comments | other blogs | 19367 reads
FORTRAN 25th anniversary film onlineFORTRAN 25th anniversary film, 1982, 12.5 minutes. Computer History Museum lot number X2843.2005, donated by Daniel N. Leeson. Windows Media Video (12.8 megabytes) Another great resource from Paul McJones. The video quality isn't great, but this is still very much worth your time. It's interesting to see the faces behind the history of our discipline. I am not going to list all the ideas from the film that are worth discussing. Let me just note that several remarks at the begining show just how remarkable the notion of a programming language really is (or was, at the time). The guys discussing Fortress will also find several of the comments made in the film interesting. Ragel State Machine Compiler
By Mark Evans at 2005-11-19 06:56 | Meta-Programming | Software Engineering | login or register to post comments | other blogs | 13424 reads
Felleisen: How to Design Class HierarchiesMy talk will instead present a novel approach to the first-year programming curriculum. Specifically, I will explain how a functional semester ideally prepares students for the true essence of object-oriented programming according to Alan Kay: the systematic construction of small modules of code and the construction of programs without assignment statements. Experience shows that these courses prepare students better for upper-level courses than a year of plain object-oriented programming. Initial reports from our students' co-op employers appear to confirm the experiences of our upper-level instructors. (full abstract) We discussed this approach (FP as an introduction to OOP) before. This presentation is from FPDE 2005. Ruby the RivalChris Adamson at OnJava.com published interviews with a few language luminaries and Java developers. Inspired by Bruce Tate's book Beyond Java, Adamson argues that Ruby is poised to become Java's successor:
The interviews are a very interesting read, and the dialogue covers a diverse range of topics. The power of Ruby on Rails is a common theme throughout, and Tate argues that Rails is the catalyst that will push Ruby into the mainstream. What I don't understand is this: if Rails will make Ruby the next Java, why didn't Zope do that for Python? The X10 Programming LanguageX10 is a type-safe, modern, parallel, distributed object-oriented language intended to be very easily accessible to Java(TM) programmers. It is targeted to future low-end and high-end systems with nodes that are built out of multi-core SMP chips with non-uniform memory hierarchies, and interconnected in scalable cluster configurations. A member of the Partitioned Global Address Space (PGAS) family of languages, X10 highlights the explicit reification of locality in the form of places; lightweight activities embodied in async, future, foreach, and ateach constructs; constructs for termination detection (finish) and phased computation (clocks); the use of lock-free synchronization (atomic blocks); and the manipulation of global arrays and data structures. X10 was mentioned here a couple of times, but I don't think it was ever discussed at length. Here's the (relatively empty) IBM Research X10 home page. What good is Strong Normalization in Programming Languages?There's a neat thread about strong normalization happening on The Types Forum.
Termination is good:
Termination is good!
Termination is good and with fixpoints is turing complete?
Terminating reductions allows exhaustive applications of optimizations:
Rene Vestergaard also gave a link to a 2004 discussion of strong normalization on the rewriting list. By shapr at 2005-11-17 12:31 | Implementation | Lambda Calculus | Theory | Type Theory | 15 comments | other blogs | 11128 reads
Extensible Records With Scoped Labels
Extensible Records With Scoped Labels
Daan Leijen Records provide a safe and flexible way to construct data structures. We describe a natural approach to typing polymorphic and extensible records that is simple, easy to use in practice, and straightforward to implement. A novel aspect of this work is that records can contain duplicate labels, effectively introducing a form of scoping over the labels. Furthermore, it is a fully orthogonal extension to existing type systems and programming languages...Last time one of Daan's papers was mentioned, there was a very positive response (after Frank reminded us a couple of times). This is equally good: clever, elegant, and clearly presented. (Between this and the Sheard paper, it's a good week for practical type systems...) By Matt Hellige at 2005-11-15 16:29 | Implementation | Type Theory | 9 comments | other blogs | 16937 reads
Putting Curry-Howard to Work
via LtU forums:
The Curry-Howard isomorphism states that types are propositions and that programs are proofs. This allows programmers to state and enforce invariants of programs by using types. Unfortunately, the type systems of today's functional languages cannot directly express interesting properties of programs. To alleviate this problem, we propose the addition of three new features to functional programming languages such as Haskell: Generalized Algebraic Datatypes, Extensible Kind Systems, and the generation, propagation, and discharging of Static Propositions. These three new features are backward compatible with existing features, and combine to enable a new programming paradigm for functional programmers. This paradigm makes it possible to state and enforce interesting properties of programs using the type system, and it does this in manner that leaves intact the functional programming style, known and loved by functional programmers everywhere.The paper is short and reasonably easy to read, also the examples are very realistic - check section 13 as a starter. Getting half through the paper made we willing to play with implementation, getting to the last page made my hands itching to implement my own PL with a similar type system. You are warned :) OCaml 3.0.9The most recent version of Objective Caml is 3.09.0. It was released on 2005-10-27. Some of the highlights in release 3.09 are:
For more information, please consult the comprehensive list of changes. By Mark Evans at 2005-11-10 03:34 | General | Object-Functional | Spotlight | 13 comments | other blogs | 13418 reads
|
Browse archives
Active forum topics |
Recent comments
2 weeks 2 days ago
2 weeks 3 days ago
2 weeks 4 days ago
2 weeks 4 days ago
3 weeks 2 days ago
3 weeks 2 days ago
3 weeks 2 days ago
6 weeks 3 days ago
7 weeks 1 day ago
7 weeks 1 day ago